home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C64 / A-Monthly Disks / (c)abi.d64 / graph maker (.txt) < prev    next >
Commodore BASIC  |  2007-02-04  |  5KB  |  175 lines

  1. 1 REM *******************************
  2. 2 REM *                             *
  3. 3 REM *      GRAPHMAKER 64 (C) 1984 *
  4. 4 REM *         DOUG SMOAK          *
  5. 5 REM *         303 HEYWARD ST.     *
  6. 6 REM *         COLUMBIA SC 29203   *
  7. 7 REM *         (803)-765-1189      *
  8. 8 REM *                             *
  9. 9 REM *******************************
  10. 10 BO=53280:BG=BO+1:POKEBG,0:POKEBO,0:POKE56296,0
  11. 20 OV$=""
  12. 30 DN$=""
  13. 40 BL$=DN$+""+"                                      "
  14. 50 CC=4:DIMFR$(7),T$(36),V(36),CL$(7),F$(2),S(2),E(2)
  15. 60 S(1)=1024:E(1)=2024:S(2)=55296:E(2)=56297
  16. 70 CL$(0)="[152]":CL$(1)="[158]":CL$(2)="[129]":CL$(3)="":CL$(4)="[156]":CL$(5)=""
  17. 80 CL$(6)="[154]":CL$(7)="[155]"
  18. 90 PRINT"[147][152]              GRAPHMAKER 64"
  19. 100 PRINT"C_CREATE A GRAPH":PRINT"L_LOAD A GRAPH"
  20. 110 GETG$:ON-(G$="")GOTO110:IFG$<>"L"ANDG$<>"C"THEN110
  21. 120 IFG$="L"THEN1170
  22. 130 INPUT"[147]MAXIMUM VERTICAL SCALE VALUE";MX:BI=MX/20:LI=BI/7:IFMX=<0THEN130
  23. 140 GOSUB280:GOSUB570
  24. 150 FORI=1TOVB
  25. 160 PRINT"[147]VALUE TO BE GRAPHED":PRINT"FOR BAR #"I"[157], "T$(I);
  26. 170 INPUTV(I):IFV(I)>MXTHENV(I)=MX
  27. 180 GOSUB390
  28. 190 NEXT:PRINTGR$MX$
  29. 200 :
  30. 210 REM ** LOOP FOR BARS **
  31. 220 :
  32. 230 FORC=1TOVB:V=V(C):V=V-3*(BI/7):GOSUB460:NEXT
  33. 240 GOTO810
  34. 250 :
  35. 260 REM ** SET UP PARAMETERS **
  36. 270 :
  37. 280 PRINT"[147]HOW MANY VERTICAL BARS":PRINT"(2-36) ";:INPUTVB
  38. 290 IFVB>36ORVB<2THEN280
  39. 300 BW=INT(36/VB)
  40. 310 FORI=1TOVB
  41. 320 PRINT"[147]TITLE FOR BAR #"I:PRINT"UP TO"BW"CHARACTERS";
  42. 330 INPUTT$(I):IFT$(I)=""THENT$(I)=STR$(I)
  43. 340 IFLEN(T$(I))>BWAND(BW>2)THEN320
  44. 350 NEXT:RETURN
  45. 360 :
  46. 370 REM ** CENTER ROUTINE **
  47. 380 :
  48. 390 IFBW<3THENT$(I)=RIGHT$(T$(I),1):RETURN
  49. 400 IFLEN(T$(I))=BWTHENRETURN
  50. 410 MR=BW-LEN(T$(I)):MR=MR/2:IFMR<1THENRETURN
  51. 420 MR$="":FORJ=1TOMR:C$=""+C$:NEXT:T$(I)=C$+T$(I):C$="":RETURN
  52. 430 :
  53. 440 REM ** CHART ROUTINE **
  54. 450 :
  55. 460 IFV<LIANDV(C)>0THENFR=1:GOTO480
  56. 470 IFV>0THENBL=INT(V/BI):F=V-BL*BI:FR=INT(F/LI)
  57. 480 CC$=LEFT$(OV$,CC)
  58. 490 PRINTDN$"[152]"CC$T$(C);
  59. 500 PRINT""CL$(CAND7)
  60. 510 PRINTDN$CC$;:IFBL=0THEN530
  61. 520 FORI=1TOBL:PRINTCL$;:NEXT
  62. 530 IFFR>0THENPRINTFR$(FR)
  63. 540 CC=CC+BW:BL=0:FR=0:RETURN
  64. 550 :
  65. 560 REM ** SET UP STRINGS **
  66. 570 :
  67. 580 MX$=STR$(MX):MX$=RIGHT$(MX$,LEN(MX$)-1)
  68. 590 MX$=LEFT$(MX$,3):J=3-LEN(MX$):IFJ=0THEN610
  69. 600 FORI=1TOJ:M$=" "+M$:NEXT:MX$=M$+MX$:M$=""
  70. 610 HF=100*MX:HF=INT(HF/2):HF=HF/100:HF$=STR$(HF)
  71. 620 HF$=RIGHT$(HF$,LEN(HF$)-1):HF$=LEFT$(HF$,3)
  72. 630 J=3-LEN(HF$):IFJ=0THEN650
  73. 640 FORI=1TOJ:M$=M$+" ":NEXT:HF$=M$+HF$:M$=""
  74. 650 IFVAL(HF$)>VAL(MX$)THENHF$=LEFT$(" "+HF$,3)
  75. 660 MX$=""+MX$+"[157][157][157]"+HF$
  76. 670 GR$="[221][157][171][157]":FORI=1TO4:C$=C$+GR$:NEXT:C$=C$
  77. 680 C$="[152][147][171][157]"+C$
  78. 690 FORI=1TO5:C$=C$+GR$:NEXT:GR$=C$+"[221][157]":C$=""
  79. 700 GR$=GR$+"[157]0[173][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192]"
  80. 710 FORI=1TOBW:C$=C$+" ":NEXT:CL$=C$:C$=""
  81. 720 FORI=1TOBW:C$=C$+"[157]":NEXT:CL$=""+CL$+C$+"[145][146]":C$=""
  82. 730 FR$="[164][175][185][162][184][183][163]":FORI=1TO7:FR$(I)=MID$(FR$,I,1)
  83. 740 IFI>4THENFR$(I)=""+FR$(I)+"[146]"
  84. 750 NEXT
  85. 760 FORI=1TO7:FORJ=1TOBW:F$=F$+FR$(I):NEXTJ:FR$(I)=F$:F$="":NEXTI
  86. 770 RETURN
  87. 780 :
  88. 790 REM **INPUT FOR S/L, TITLE, ETC.**
  89. 800 :
  90. 810 PRINTDN$"[152]<T>EXT <S>AVE <A>BORT <L>OAD <P>RINT":FORT=1TO800:NEXT
  91. 820 GETG$:IFG$<>""THENPRINTBL$:GOTO840
  92. 830 PRINTBL$:FORT=1TO125:NEXT:GOTO810
  93. 840 IFG$="A"THENRUN
  94. 850 IFG$="L"THEN1170
  95. 860 IFG$="T"THEN1250
  96. 870 IFG$="P"THEN1460
  97. 880 IFG$<>"S"THEN810
  98. 890 :
  99. 900 REM ** GET SAVE FILENAME **
  100. 910 :
  101. 920 F$="":PRINTDN$"FILENAME?[166][157]";
  102. 930 GETG$:ON-(G$="")GOTO930
  103. 940 IFASC(G$)>31ANDASC(G$)<96THENF$=F$+G$
  104. 950 IFG$<>CHR$(13)THENPRINT" [157]"G$"[166][157]";:GOTO930
  105. 960 PRINTBL$:IFF$=""THEN810
  106. 970 IFLEN(F$)>14THEN920
  107. 980 F$(1)=F$:F$(2)=F$+".C"
  108. 990 OP$="S":FORJ=1TO2:F$=F$(J)
  109. 1000 S=S(J):E=E(J)
  110. 1010 GOSUB1050:NEXT:GOSUB1600:GOTO810
  111. 1020 :
  112. 1030 REM ** SAVE AND LOAD **
  113. 1040 :
  114. 1050 FORI=1TOLEN(F$):POKE819+I,ASC(MID$(F$,I,1)):NEXT
  115. 1060 POKE183,LEN(F$):POKE187,52:POKE188,3:POKE186,8:POKE185,1
  116. 1070 IFOP$="L"THEN1210
  117. 1080 :
  118. 1090 REM ** SAVE **
  119. 1100 :
  120. 1110 SH=INT(S/256):SL=S-SH*256:EH=INT(E/256):EL=E-EH*256
  121. 1120 POKE251,SL:POKE252,SH:POKE780,251:POKE781,EL:POKE782,EH
  122. 1130 SYS65496:RETURN
  123. 1140 :
  124. 1150 REM ** LOAD **
  125. 1160 :
  126. 1170 INPUT"[147]EXACT FILENAME";F$:IFF$=""ORLEN(F$)>14THEN1170
  127. 1180 F$(1)=F$:F$(2)=F$+".C"
  128. 1190 FORJ=1TO2:F$=F$(J):OP$="L":GOSUB1050
  129. 1200 NEXT:GOSUB1600:GOTO810
  130. 1210 POKE780,0:SYS65493:RETURN
  131. 1220 :
  132. 1230 REM ** CURSOR ROUTINE **
  133. 1240 :
  134. 1250 SC=1024:CR=55296
  135. 1260 IFIN<0THENIN=0
  136. 1270 IFIN>959THENIN=959
  137. 1280 OM=PEEK(SC+IN):OC=PEEK(CR-IN)
  138. 1290 POKESC+IN,(PEEK(SC+IN)+128)AND255:POKECR+IN,PEEK(646)
  139. 1300 GETG$:ON-(G$="")GOTO1290
  140. 1310 IFG$="\"THENGOSUB1410:GOTO810
  141. 1320 IFG$="[148]"ORG$=""THENG$="[221]"
  142. 1330 IFG$=CHR$(13)THENOM=(OM+128)AND255:GOSUB1410:IN=IN+1:GOTO1260
  143. 1340 IFG$=""THENGOSUB1410:IN=(IN+1):GOTO1260
  144. 1350 IFG$="[157]"THENGOSUB1410:IN=(IN-1):GOTO1260
  145. 1360 IFG$="[145]"THENGOSUB1410:IN=(IN-40):GOTO1260
  146. 1370 IFG$=""THENGOSUB1410:IN=(IN+40):GOTO1260
  147. 1380 SP=IN:GOSUB1420:PRINTG$
  148. 1390 IFASC(G$)>31ANDASC(G$)<128THENIN=IN+1
  149. 1400 GOTO1260
  150. 1410 POKESC+IN,OM:POKECR+IN,OC:RETURN
  151. 1420 Y=INT(SP/40):X=SP-40*Y:POKE781,Y:POKE782,X:SYS65520:RETURN
  152. 1430 :
  153. 1440 REM ** PRINTER DUMP **
  154. 1450 :
  155. 1460 R$=CHR$(145):V$=CHR$(146):OPEN4,4:CMD4:G=PEEK(648)*256
  156. 1470 PRINTR$+CHR$(14)
  157. 1480 FORP=GTOG+999
  158. 1490 C=PEEK(P):C$=""
  159. 1500 IF(P-G)/40=INT((P-G)/40)THENPRINTCHR$(8)+CHR$(13)+CHR$(14);
  160. 1510 IFC>128THENC=C-128:C$=CHR$(18)
  161. 1520 IFC<32ORC>95THENC=C+64:GOTO1540
  162. 1530 IFC>63ANDC<96THENC=C+128
  163. 1540 C$=C$+CHR$(C):IFLEN(C$)>1THENC$=C$+V$+R$
  164. 1550 PRINTC$;:NEXT:PRINT#4:CLOSE4
  165. 1560 GOTO810
  166. 1570 :
  167. 1580 REM ** READ DISK ERROR CH **
  168. 1590 :
  169. 1600 OPEN15,8,15:INPUT#15,A,B$,C,D
  170. 1610 CLOSE15
  171. 1620 IFA=0THENRETURN
  172. 1630 PRINTBL$DN$""A"[157] "B$" ERROR":FORT=1TO850:NEXT
  173. 1640 GETG$:IFG$<>""THENRETURN
  174. 1650 PRINTDN$"PRESS ANY KEY TO CONTINUE":FORT=1TO850:NEXT:GOTO1630
  175.